Main.overview.connect('showing', Lang.bind(this, this._overviewShowing));
Main.overview.connect('hidden', Lang.bind(this, this._overviewHidden));
Main.sessionMode.connect('updated', Lang.bind(this, this._sessionUpdated));
- this._startupAnimation();
},
_overviewShowing: function() {
return this._keyboardIndex;
},
- _startupAnimation: function() {
+ prepareStartupAnimation: function() {
this.panelBox.translation_y = -this.panelBox.height;
+ },
+ startupAnimation: function() {
let plymouthTransitionRunning = false;
// If we're the greeter, put up the xrootpmap actor
// Setup the stage hierarchy early
layoutManager = new Layout.LayoutManager();
+
// Various parts of the codebase still refers to Main.uiGroup
// instead using the layoutManager. This keeps that code
// working until it's updated.
BackgroundMenu.addBackgroundMenu(global.background_actor);
layoutManager.init();
+ layoutManager.prepareStartupAnimation();
overview.init();
global.screen.override_workspace_layout(Meta.ScreenCorner.TOPLEFT,
ExtensionDownloader.init();
ExtensionSystem.init();
+
+ // Run the startup animation as soon as the mainloop is idle enough.
+ // This is necessary to have it smooth and without interruptions from
+ // completed IO tasks
+ GLib.idle_add(GLib.PRIORITY_LOW, function() {
+ layoutManager.startupAnimation();
+ return false;
+ });
}
let _workspaces = [];